#ifndef BALL_OWNED_STATES_H
#define BALL_OWNED_STATES_H
//------------------------------------------------------------------------
//
//  Name:   MinerOwnedStates.h
//
//  Desc:   All the states that can be assigned to the Miner class.
//          Note that a global state has not been implemented.
//
//  Author: Mat Buckland 2002 (fup@ai-junkie.com)
//
//------------------------------------------------------------------------
#include "OgreRefAppState.h"
#include "OgreRefAppBall.h"

//------------------------------------------------------------------------
//
//  In this state the miner will walk to a goldmine and pick up a nugget
//  of gold. If the miner already has a nugget of gold he'll change state
//  to VisitBankAndDepositGold. If he gets thirsty he'll change state
//  to QuenchThirst
//------------------------------------------------------------------------
namespace OgreRefApp
{
    struct ApplicationObject::CollisionInfo;

    class OnGame : public State<Ball>
    {
    private:

        OnGame(){}

        //copy ctor and assignment should be private
        OnGame(const OnGame&);
        OnGame& operator=(const OnGame&);

    public:

        //this is a singleton
        static OnGame* Instance();

        virtual void Enter(Ball* ball);

        virtual void Execute(Ball* ball);

        virtual void Exit(Ball* ball);

        virtual bool OnMessage(Ball* ball, ApplicationObject::CollisionInfo& msg);

    };
}

#endif;
